0 REM******* BUCK'S ADDRESS LIST ***** 1 IFA=0THENA=1:LOAD"ADDRESS LIST M/L",8,1 5 TI$="000000":SYS30120:POKE53281,0:POKE53280,0:CLR 10 IFVAL(TI$)>210THENTI$="000000":SYS30120 15 PRINTCHR$(147):RESTORE 20 PRINTTAB(10)"[152]*** ADDRESS FILE [146]***" 25 PRINT"":FOR A=1TO3:READ M$ 30 PRINTTAB(10);"";A;"- ";M$ 35 NEXT A 40 PRINTTAB(10)" CHOOSE BY NUMBER [146]" 45 GET A$:A=VAL(A$):IF A<1 THEN 45 50 ON A GOTO 95, 135, 85 55 GOTO 45 60 DATA INPUT DATA,READ DATA,QUIT,ADD ENTRIES 65 DATA CHANGE ENTRY,DELETE ENTRY 70 DATA START NEW FILE,DESTROY FILE,GO TO MAIN MENUE 75 DATA READ ALL ENTRIES,READ BY LAST NAME,READ BY FIRST NAME 80 DATA READ SINGLE ENTRY,GO TO MAIN MENUE 85 IF PT%>0 THENGOSUB 740 90 SYS770 95 PRINT CHR$(147) 100 PRINTTAB(10)"*** ADDRESS FILE [146]***" 105 PRINT"":FOR A=1TO6:READ M$ 110 PRINTTAB(10);"";A;"- ";M$ 115 NEXT A 120 PRINTTAB(10)" CHOOSE BY NUMBER [146]" 125 GET A$:A=VAL(A$):IF A<1 THEN 125 130 ON A GOTO 235, 405, 480, 185, 205, 10 135 FOR A=1 TO 6:READ M$:NEXT A 140 PRINTCHR$(147) 145 PRINTTAB(10)"*** ADDRESS FILE [146]***" 150 PRINT"":FOR A=1TO5:READ M$ 155 PRINTTAB(10);"";A;"- ";M$ 160 NEXT A 165 PRINTTAB(10)" CHOOSE BY NUMBER [146]" 170 GET A$:A=VAL(A$):IF A<1 THEN 170 175 ON A GOTO 275, 315, 310, 305, 10 180 REM***** START FILE *************** 185 OPEN15,8,15,"I0" 190 OPEN2,8,2,"0:ADDRESS FILE,S,W" 195 PRINT#2,0:CLOSE2:CLOSE15:GOTO 10 200 REM***** DESTROY FILE ************* 205 PRINT"[147]ARE YOU SURE YOU WANT TO DESTROY" 210 PRINT"YOUR ENTIRE ADDRESS FILE ?????(Y/N)" 215 GETA$:IFA$=""THEN 215 220 IFA$="Y"THENOPEN15,8,15,"S0:ADDRESS FILE":CLOSE15:GOTO 10 225 IFA$<>"N"THEN 215 230 GOTO 10 235 REM*** ADD TO FILE **************** 240 IF PT%>0 THENGOSUB 740 245 IF IP%=1 THENCLR 250 PRINT CHR$(147):PRINT:PRINT 255 INPUT" NUMBER OF NAMES TO ADD";NE% 260 GOSUB 625 265 FOR X=N%+1TON:GOSUB 565:NEXT X 270 PT%=1:GOSUB 875:GOTO 10 275 REM*** READ SUBROUTINE ************ 280 GOSUB 625:FOR X=1TON 285 IF DA$(X,1)="\X"THEN 295 290 GOSUB 820 295 NEXT X:GOTO 10 300 REM*** SEARCH SUBROUTINE ********** 305 L%=1:GOTO 315 310 F%=1 315 GOSUB 625 320 PRINT CHR$(147):PRINT:PRINT 325 PRINT" NAME TO FIND ":PRINT 330 IF F%=1 THENNA$="":GOTO 345 335 INPUT" LAST NAME";NA$ 340 IF F%=0ANDL%=0THENNL$="":GOTO 350 345 PRINT:INPUT" FIRST NAME ";NL$ 350 FOR X=1TON 355 IF F%=0 THENGOTO 365 360 IF DA$(X,2)=NL$ OR DA$(X,3)=NL$ THENGOTO 390 365 IF DA$(X,1)<>NA$ THEN 395 370 IF L%=1 THEN 385 375 IF L%=0 THEN 390 380 IF F%=O THEN 390 385 IF DA$(X,2)<>NL$ THEN 395 390 GOSUB 820 395 NEXT X:L%=0:F%=O 400 GOTO 10 405 REM*** CHANGE SUBROUTINE ********** 410 GOSUB 625 415 PRINT CHR$(147):PRINT:PRINT 420 PRINT" NAME TO CHANGE " 425 PRINT:INPUT" LAST NAME ";NA$ 430 PRINT:INPUT" FIRST NAME ";NL$ 435 FOR X=1TON 440 IF DA$(X,1)<>NA$ THEN 470 445 IF DA$(X,2)<>NL$ THEN 470 450 FORY=1TO8:PRINTTAB(7);" ";DA$(X,Y) 455 INPUT "[145]";DA$(X,Y) 460 GOSUB 1015 465 NEXT Y 470 NEXT X 475 PT%=1:GOTO 10 480 REM*** DELETE SUBROUTINE ********** 485 PRINTCHR$(147):PRINT:PRINT 490 PRINT" ENTER NAME TO DELETE":PRINT 495 INPUT" LAST NAME";NA$ 500 PRINT:INPUT" FIRST NAME ";NN$ 505 GOSUB 625 510 FOR X=1TON 515 IF DA$(X,1)<>NA$ THEN 560 520 IF DA$(X,2)<>NN$ THEN 560 525 GOSUB 820 530 PRINT" IS THIS THE ENTRY TO DELETE? (Y/N)" 535 GET AN$ 540 IF AN$="N" THEN 10 545 IF AN$<>"Y" THEN 535 550 DA$(X,1)="\X" 555 PT%=2:D%=D%+1 560 NEXT X:GOTO 10 565 REM*** INPUT SUBROUTINE *********** 570 PRINT CHR$(147):PRINT:PRINT 575 PRINT" ENTRY #";X-N%:PRINT 580 Y=1:INPUT" LAST NAME......";DA$(X,Y):GOSUB 1015 585 Y=2:INPUT" FIRST NAME.....";DA$(X,Y):GOSUB 1015 590 Y=3:INPUT" SPOUSE'S NAME..";DA$(X,Y):GOSUB 1015 595 Y=4:INPUT" ADDRESS........";DA$(X,Y):GOSUB 1015 600 Y=5:INPUT" CITY...........";DA$(X,Y):GOSUB 1015 605 Y=6:INPUT" STATE..........";DA$(X,Y):GOSUB 1015 610 Y=7:INPUT" ZIP CODE.......";DA$(X,Y):GOSUB 1015 615 Y=8:INPUT" PHONE #........";DA$(X,Y):GOSUB 1015 620 RETURN 625 REM*** INPUT# SUBROUTINE ********** 630 PRINT"[147]" 635 PRINTTAB(12)" LOADING FILE [146]" 640 IF IP%=1 THENRETURN 645 OPEN15,8,15,"I0" 650 OPEN2,8,2,"0:ADDRESS FILE,S,R" 655 INPUT#15,E1$,E2$,E3$,E4$ 660 IF VAL(E1$)>0 THENCLOSE2:CLOSE15:GOSUB 715:GOTO 625 665 INPUT#2,N% 670 N=N%+NE% 675 DIM DA$(N+2,8) 680 IF N%=0 THEN 705 685 FOR X=1TON%:FOR Y=1TO8 690 INPUT#2,DA$(X,Y) 695 POKE53280,CL:CL=CL+1:IFCL>16THENCL=0 700 NEXT Y:NEXT X 705 CLOSE2:CLOSE15 710 POKE53280,0:IP%=1:RETURN 715 PRINT"[147]",E2$ 720 IFE2$="FILE NOT FOUND"THENPRINT" MAYBE YOU NEED TO START NEW FILE" 725 IFE2$="FILE NOT FOUND"THENPRINT"RUN 10[145][145][145][145]":STOP 730 PRINT" CORRECT ERROR AND HIT RETURN [146]" 735 PRINT"CONT[145][145][145][145]":STOP:RETURN 740 REM*** PRINT# SUBROUTINE ********** 745 PRINT"[147]" 750 PRINTTAB(12)" SAVING FILE [146]" 755 OPEN15,8,15,"I0" 760 OPEN2,8,2,"@0:ADDRESS FILE,S,W" 765 INPUT#15,E1$,E2$,E3$,E4$ 770 IF VAL(E1$)>0 THENCLOSE2:CLOSE15:GOSUB 715:GOTO 740 775 Q%=N-D% 780 PRINT#2,Q%;CHR$(13); 785 FOR X=1TON:FOR Y=1TO8 790 IF DA$(X,1)="\X"THEN 810 795 PRINT#2,DA$(X,Y) 800 POKE53280,CL:CL=CL+1:IFCL>16THENCL=0 805 NEXT Y 810 NEXT X 815 POKE53280,0:CLOSE2:CLOSE15:RETURN 820 REM******PRINT ROUTINE************ 825 PRINT CHR$(147):PRINT"" 830 PRINTTAB(10);DA$(X,1);", ";DA$(X,2);" & ";DA$(X,3) 835 PRINTTAB(10);DA$(X,4) 840 PRINTTAB(10);DA$(X,5);", ";DA$(X,6);" "DA$(X,7) 845 PRINTTAB(10);DA$(X,8) 850 PRINTTAB(13);"" 855 PRINTTAB(10);"" 860 GET AN$:IF AN$="" THEN 860 865 IF AN$="P" THENGOSUB 940 870 RETURN 875 REM ********SORT**************** 880 IFN<=2THENRETURN 885 PRINT"[147]":PRINTTAB(12)" SORTING FILE [146]" 890 DIM SW$(2,8) 895 FOR X=1 TO N 900 FOR S=NTOX+1 STEP-1:POKE53280,CL:CL=CL+1:IFCL>16THENCL=0 905 IFDA$(X,1)+DA$(X,2)<=DA$(S,1)+DA$(S,2) THEN 935 910 FORY=1TO8:SW$(1,Y)=DA$(S,Y):NEXTY 915 FORZ=S-1TOXSTEP-1:FORY=1TO8 920 DA$(Z+1,Y)=DA$(Z,Y):NEXTY:NEXTZ 925 FORY=1TO8:DA$(X,Y)=SW$(1,Y):NEXTY 930 S=S+1 935 NEXT S:NEXT X:POKE53280,0:RETURN 940 REM ******** PRINTER OUTPUT ***** 945 OPEN4,4 950 PRINT"1ST 2ND OR BOTH NAMES (1 2 OR B) ?" 955 GETA$:IFA$=""THEN 955 960 INPUT"HOW MANY";LA% 965 FORZZ=1TOLA% 970 IFA$="1"THEN 990 975 IFA$="2"THEN 985 980 PRINT#4,DA$(X,2);" & ";DA$(X,3);" ";DA$(X,1):GOTO 995 985 PRINT#4,DA$(X,3);" ";DA$(X,1):GOTO 995 990 PRINT#4,DA$(X,2);" ";DA$(X,1) 995 PRINT#4,DA$(X,4) 1000 PRINT#4,DA$(X,5);",";DA$(X,6);" ";DA$(X,7) 1005 FORPR=1TO3:PRINT#4:NEXTPR:PRINT" ";ZZ:NEXTZZ 1010 CLOSE4:X=X-1:RETURN 1015 REM***************************** 1020 REM*** CHECK ENTRY ************* 1025 REM***************************** 1030 IF DA$(X,Y)=""THEN 1060 1035 FORCK=1TO(LEN(DA$(X,Y))) 1040 CK$=MID$(DA$(X,Y),CK,1) 1045 IFCK$=","ORCK$=";"ORCK$=":"THEN 1060 1050 NEXT CK 1055 RETURN 1060 DA$(X,Y)="ERROR":RETURN